﻿import pymysql
import pandas as pd
# 定义链接到mysql的函数，返回连接对象
# db_name是当前数据库的名字
# def getcon(db_name):
#     # host是选择连接哪的数据库localhost是本地数据库，port是端口号默认3306
#     #user是使用的人的身份，root是管理员身份，passwd是密码。db是数据库的名称，charset是编码格式
#     conn = pymysql.connect(host="localhost", port=3306, user='root', passwd='123456', db=db_name, charset='utf8')
#     # 创建游标对象
#     cursor1=conn.cursor()
#     return conn,cursor1
# 定义读取文件并且导入数据库数据sql语句
from utils.mysql_util import MysqlHelper


def insertData(db_name,table_name):
    db = MysqlHelper()
    # 调用链接到mysql的函数，返回我们的conn和cursor1
    conn,cursor1=db.conn,db.cursor
    # 使用pandas 读取csv文件
    df=pd.read_csv('../test1/居民客户的用电缴费习惯分析 1.csv', encoding='GBK')
    # df = pd.read_csv('../test2/居民客户的用电缴费习惯分析 2.csv', encoding='GBK')
    #使用for循环遍历df，是利用df.values，但是每条数据都是一个列表
    # 使用counts计数一下，方便查看一共添加了多少条数据
    counts = 0
    for each in df.values:
        # 每一条数据都应该单独添加，所以每次添加的时候都要重置一遍sql语句
        sql = 'insert into '+ table_name + ' VALUES ('
        # 因为每条数据都是一个列表，所以使用for循环遍历一下依次添加
        for i, n in enumerate(each):
            # 这个时候需要注意的是前面的数据可以直接前后加引号，最后加逗号，但是最后一条的时候不能添加逗号。
            # 所以使用if判断一下
            # print(i)
            # print(n)
            if i < 6:
            # if i < 1:
                sql = sql + "'" + str(n) + "'" + ','
            else:
                sql = sql + "'" + str(n) + "'"
        sql = sql + ');'
        # print(sql)
        # 当添加当前一条数据sql语句完成以后，需要执行并且提交一次
        cursor1.execute(sql)
        # 提交sql语句执行操作
        conn.commit()
        # 没提交一次就计数一次
        counts+=1
        # 使用一个输出来提示一下当前存到第几条了
        print('成功添加了'+str(counts)+'条数据 ')
    return conn,cursor1
# 主函数
def main (db_name, table_name):
    conn, cursor1 = insertData(db_name,table_name)
    # 当添加完成之后需要关闭我们的游标，以及与mysql的连接
    cursor1.close()
    conn.close()
# 判断一下，防止再次在其他文件调用当前函数的时候会使用错误，多次调用
if __name__=='__main__':
    # 输入数据库名称和表名
    main('volts','elec_0')
